package com.fecean.aabbc.netty.message7;

/**
 * * Netty消息类型枚举
 *
 * @author: chenfenghai
 * @version: 1.0
 * @date: 2020-03-16 14:18
 * @blame Android Team
 */
public enum MessageType {

    /**
     ** 注册
     */
    REGISTER("1", "注册"),

    /**
     ** 心跳
     */
    HEARTBEAT("2", "心跳"),

    /**
     ** 通知
     */
    NOTICE("3", "通知"),

    /**
     ** 请求
     */
    REQUEST("4", "请求"),

    /**
     ** 响应
     */
    RESPONSE("5", "响应");

    /**
     ** 编码
     */
    private String code;

    /**
     ** 文本
     */
    private String text;

    /**
     ** 构造方法
     *
     * @param code 编码
     * @param text 文本
     */
    MessageType(String code, String text) {
        this.code = code;
        this.text = text;
    }

    /**
     * 获取编码
     *
     * @return 编码
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取文本
     *
     * @return 文本
     */
    public String getText() {
        return text;
    }

    /**
     ** 比较，相同返回true，否则返回false
     *
     * @param object 枚举对象、编码、名称、文本都可以
     * @return boolean
     */
    public boolean compare(Object object) {
        if (object == null) {
            return false;
        }
        if (object instanceof MessageType) {
            return this.compareTo((MessageType)object) == 0;
        } else {
            return this.name().equals(object)
                    || this.code.equals(object)
                    || this.text.equals(object);
        }
    }

    /**
     ** 获取对应的枚举，没有匹配则返回null
     *
     * @param object 枚举对象、编码、名称、文本都可以
     * @return 枚举
     */
    public static MessageType getEnum(Object object) {
        if (object == null) {
            return null;
        }
        for (MessageType enumType : MessageType.values()) {
            if (enumType.compare(object)) {
                return enumType;
            }
        }
        return null;
    }
}
